package com.weds.data_sync.constant;

/**
 * @Description 脚本服务常量
 * @Author lihw
 * @Date 2024/1/2 17:46
 */
public interface ScriptServiceConstant {

    /**
     * python脚本调用地址
     */
    String SCRIPT_REQUEST_HOST = "http://localhost:8080";

    /**
     * python调用接口地址
     */
    String SCRIPT_REQUEST_API = "/data-sync/test/script_service";

    /**
     * 公共md加密秘钥
     */
    String COMMON_SECRET = "abc123!@#";

    /**
     * web端base64编码前缀
     */
    String WEB_BASE64_PREFIX = "data:text/plain;base64,";

    /**
     * 数据库类型
     */
    interface DbType {
        Integer PG = 1;
        Integer MYSQL = 2;
    }

    /**
     * 数据源类型
     */
    interface DsType {
        /**
         * 业务库
         */
        Integer BUSINESS = 1;
        /**
         * 前置库
         */
        Integer PREVIOUS = 2;
        /**
         * 三方库
         */
        Integer THIRD = 3;
    }

    /**
     * 文件存储类型
     */
    interface FileSaveType {
        Integer FILE = 1; // 文件
        Integer TEXT_CON = 2;   // 文本内容
    }

    /**
     * 回调方式
     */
    interface CallbackType {
        Integer REST = 1; // 远程接口
        Integer MQ = 2;     // mq消息队列
    }

    /**
     * 路由方式
     */
    interface RouteType {
        Integer TOPIC = 1;
        Integer FANOUT = 2;
        Integer DIRECT = 3;
    }

    /**
     * 脚本类型
     */
    interface ScriptType {
        Integer PYTHON = 1;
        Integer NODE = 1;

        /**
         * 根绝脚本类型获取脚本文件后缀
         *
         * @param scriptType
         * @return
         */
        static String getFileSuffixByScriptType(Integer scriptType) {
            switch (scriptType) {
                case 1:
                    return "py";
                case 2:
                    return "js";
                default:
                    return "python";
            }
        }
    }

    /**
     * 脚本执行计划的状态
     */
    interface PlanRecordStatus {
        Integer FAIL = 0;
        Integer SUCCESS = 1;
        Integer TIMEOUT = 2;
        Integer EXECUTING = 3; // 执行中
    }

    /**
     * 通用状态
     */
    interface CommonStatus {
        Integer SUCCESS = 1;
        Integer FAIL = 0;


    }

    /**
     * 脚本执行方式
     */
    interface RunType {
        Integer JOB = 1;    // 自动轮询
        Integer MANUAL = 2; // 手动
    }

}
